A Controller Area Network (CAN) is a serial network using a protocol that defines the data link and part of the physical layer in the OSI model. A CAN bus is a broadcast bus that can link to a plurality of transceiver nodes. The bits in a CAN message can be sent as either high or low. Data messages conventionally are in Non-Return To Zero (NRZ) bit coding with bit stuffing used to complete message frames.
A dominant bus state, conventionally logical 0, and a recessive bus state, conventionally logical 1, correspond to electrical levels that depend on the physical layer used. If a communication node connected to the bus is driving the bus to the dominant state, the whole bus is in that state regardless of the number of nodes transmitting a recessive state. Before sending a message bit, a CAN node checks if the bus is busy to avoid collision. As low bits are always dominant, if one node tries to send a low and another node tries to send a high, the result on the bus will be a low. This functionality corresponds to a logical AND since the recessive state (logically high level) is obtained only when all nodes output a logically high level. A transmitting node always checks on the bus while transmitting. A node that sends a high in the arbitration field and detects a low knows that it has lost arbitration. It stops transmitting, letting the other node, with a higher priority message, continue uninterrupted.
Data messages transmitted from any node on the CAN bus do not contain addresses of either the transmitting node or intended receiving node(s). A message, instead, is labeled with an identifier. Each of the other nodes on the network receive the message and check the identifier to determine if the message is relevant to the particular receiving node. Two nodes on the network are not allowed to send messages with the same identifier. If two nodes attempt to send a message with the same identifier at the same time, one of the transmitting nodes will detect that its message is distorted outside of the arbitration field.
Under ISO/SAE CAN standards, CAN bus systems may employ dual wire busses for higher speeds, up to 1 Mbit/second, or single wire busses for lower speeds of up to 50 kbit/second. Various transceivers, such as the Philips AU5790 single wire transceiver, the Linear Technology LT1796 dual wire transceiver, and the Philips 82C250, are commercially available as well as protocol controllers.
Dual wire CAN bus systems and currently also single wire CAN bus systems have been employed in automotive systems. Typically, a plurality of diagnostic and control modules are provided in a vehicle and linked by a CAN bus. A technician can access the CAN network, and thus the modules, through a coupling to an external network. Various testing and diagnostic functions can then be performed through bidirectional data communications between the two networks.
Incompatibility problems are presented if the physical layer components of the vehicle CAN bus system and the external network are different. If the external network employs a dual wire CAN configuration while the vehicle bus system is a single wire CAN configuration, for example, an interface is needed to permit data communication between the two dissimilar busses. The interface must also control the direction of data transfer between the two busses in accordance with dominant bit signals issued on the busses. Transitions between data transfer directions should take place without incurring closed loop oscillations. Similar incompatibility issues require resolution when interfacing dual wire bus systems of different physical level properties.